/**
 * 
 */
package fr.gfi.agraf.service;

import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import fr.gfi.agraf.exception.AgrafException;
import fr.gfi.agraf.vue.bean.PerimetreDTO;

/**
 * @author eleve
 * 
 */
public interface IPerimetreService {

	/**
	 * Renvoie la liste de tous les périmetre de l'application
	 * 
	 * @return
	 * @throws AgrafException
	 */
	public List<PerimetreDTO> getListePerimetre() throws AgrafException;

	/**
	 * Ajoute un perimetre en base
	 * 
	 * @param perimetreDTO
	 */
	public void ajouterPerimetre(final PerimetreDTO perimetreDTO, final Long idUserCreateur);

	/**
	 * Supprime un perimetre en base
	 * 
	 * @param idPerimetre
	 * @throws AgrafException
	 */
	public void supprimerPerimetre(final Long idPerimetre, final Long idUserSuppr) throws AgrafException;

	/**
	 * Récupere tous les perimetres d'un utilisateur
	 * 
	 * @param idUtilisateur
	 * @return
	 * @throws AgrafException
	 */
	List<PerimetreDTO> getListePerimetreByUtilisateurID(final Long idUtilisateur) throws AgrafException;

	/**
	 * Export un perimetre sous format excel
	 * 
	 * @param idPerimetre
	 * @throws AgrafException
	 */
	public HSSFWorkbook exporterPerimetre(final Long idPerimetre) throws AgrafException;

}
